import { defineStore } from "pinia";
import { encryptedSerializer } from "@/utils/jiami.ts";
// 使用接口定义 state 的类型
interface CounterState {
  counter: number;
  name: string;
}

// 定义一个名为 "counter" 的 Pinia store
export const useStore = defineStore("counter", {
  // 初始化 state
  state: (): CounterState => ({
    counter: 0,
    name: "Eduardo",
  }),
  // 定义 getters 用于计算 state 的派生值
  getters: {
    // 返回 counter 的两倍
    doubleCount: (state) => state.counter * 2,
    // 返回 doubleCount 加 1 的值
    doubleCountPlusOne(): number {
      return this.counter + 1;
    },
  },
  // 定义 actions 用于修改 state
  actions: {
    // 增加 counter 的值
    increment() {
      this.counter++;
    },
    // 随机设置 counter 的值
    randomizeCounter() {
      this.counter = Math.round(100 * Math.random());
    },
  },
  persist: {
    serializer: encryptedSerializer,
    enabled: true,
    storage: localStorage,
  },
});
// 定义 StoreType 类型，表示 useStore 的返回类型
export type StoreType = ReturnType<typeof useStore>;
